热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

文中|末尾_品味树莓派:设置为无线接入点

篇首语:本文由编程笔记#小编为大家整理,主要介绍了品味树莓派:设置为无线接入点相关的知识,希望对你有一定的参考价值。文章目录

篇首语:本文由编程笔记#小编为大家整理,主要介绍了品味树莓派:设置为无线接入点相关的知识,希望对你有一定的参考价值。



文章目录


  • 目的
  • 背景知识
    • wpa_supplicant
    • hostapd
    • 路由模式和桥接模式
    • dhcpcd
    • dnsmasq
    • sysctl & netfilter & iptables
    • systemd-networkd

  • 设置为无线接入点
    • 路由模式
    • 桥接模式

  • 总结


目的

树莓派官方的定义是微型的桌面计算机,通常来说它的无线网卡和大多数个人计算机一样都是用于接入到某个无线网络中使用的(STA - Station 模式)。不过在某些情况下偶尔也会用来启用无线网络作为无线接入点使用(AP - Access Point 模式)。树莓派官方的文档中已经有介绍怎么进行设置了,这篇文章将依照官方文档做个扩充性的说明。

本文中演示中设备使用 Raspberry Pi 4 Model B ,系统使用 Raspberry Pi OS(32-bit 2022-04-04)


背景知识

wpa_supplicant

树莓派中管理无线网卡作为客户端去连接无线网络所用的程序是 wpa_supplicant (主流的操作系统中很多使用的也是这个)。

对于用户而言 wpa_supplicant 主要涉及下面几个内容:


  • wpa_supplicant 守护进程;
  • wpa_supplicant.conf 配置文件;
  • wpa_cli 命令行工具;
  • wpa_gui 图形化工具;

wpa_supplicant.conf 文件中最主要记录了欲连接的无线网络的名称和密码等信息,比如下面例子:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
network=
ssid="Name of your wireless LAN"
psk="Password for your wireless LAN"

其中country为地区代码(CN表示China);network保存的是一个无线网络的相关信息。你也可以设置多个无线网络:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
network=
ssid="Name of your wireless LAN 1"
psk="Password for your wireless LAN 1"

network=
ssid="Name of your wireless LAN 2"
psk="Password for your wireless LAN 2"

wpa_supplicant通常安装为开机启动的守护进程,wpa_supplicant启动后会去读取配置文件(默认为 /etc/wpa_supplicant/wpa_supplicant.conf ),然后尝试连接可用的网络。


hostapd

wpa_supplicant 对应的有一个叫做 hostapd 的程序,这个程序可以用将无线网卡作为无线接入点使用。

对于用户而言 hostapd 主要涉及下面几个内容:


  • hostapd 守护进程;
  • hostapd.conf 配置文件;
  • hostapd_cli 命令行工具;

hostapd常见的也是作为守护进程读取hostapd.conf文件(默认为 /etc/hostapd/hostapd.conf )来执行相关的操作。


路由模式和桥接模式

树莓派Pi4有一个有线网口和一个无线网口,启用无线接入点通常可以工作在两种模式下:


  • 路由模式
    路由模式就和普通无线路由器差不多,所有连接到这个热点中的设备都在一个网段下;
    树莓派作为网关和DHCP服务器,连接到这个热点的所有设备间都可以互相通讯;
    如果想要访问外网就需要通过有线网口进行,树莓派需要处理路由和数据转发;
  • 桥接模式
    桥接模式下所有连接到这个热点中的设备和树莓派以及树莓派有线连接的网络中其它设备都在一个网段下;
    连接到这个热点中的设备的IP地址均由树莓派有线连接的网络中的DHCP服务器提供;
    这里通过树莓派无线网口连接的设备想要连接到树莓派有线所连接的网络中就需要在两个网口间进行桥接了;

dhcpcd

dhcpcd是一个默认启动的守护进程,提供DHCP客户端功能,用于向网络中的DHCP服务器获取网口在网络中的IP地址。和前面的程序一样该程序也有默认的配置文件 /etc/dhcpcd.conf


dnsmasq

dnsmasq是一个面向小型网络的 DNS & DHCP 服务器程序。和前面的程序一样该程序也有默认的配置文件 /etc/dnsmasq.conf


sysctl & netfilter & iptables

sysctl这个程序用于检查和设置内核参数;netfilter相当于防火墙程序,用于管理网络数据包的进出;iptables用来设置netfilter的规则。
在本文中使用这几个程序或其变种来实现路由模式下路由和数据转发功能。


systemd-networkd

systemd-networkd是一个管理网络配置的系统守护进程。它会在网络设备出现时检测和配置;它还可以创建虚拟网络设备。
在本文中使用这个程序来创建虚拟的网桥来提供桥接功能。


设置为无线接入点

树莓派官方文档(Configuration章节中有建立无线热点的说明):
https://www.raspberrypi.com/documentation/

树莓派Pi4中只有一个无线网口wlan0,所以要设置为无线接入点的话主要就是要实现下面几点:


  • 不让wpa_supplicant占用wlan0;
  • 使用hostapd通过wlan0建立无线热点;
  • 路由模式
    • 使用dnsmasq给建立的无线网络提供DHCP和DNS服务;
    • 使用sysctl&netfilter&iptables实现路由和转发功能;
  • 桥接模式
    • systemd-networkd实现桥接功能;

如果只是想要使用树莓派建立一个无线热点,提供接入这个热点内设备互通的话只要按照路由模式设置,提供dhcp和dns服务即可,不需要实现路由和转发功能。

下面两个模式的演示都在刚装好的系统上进行。


路由模式

安装相关程序:

sudo apt install hostapd -y
sudo apt install dnsmasq -y
sudo DEBIAN_FRONTEND=noninteractive apt install -y netfilter-persistent iptables-persistent

调整dhcpcd程序对wlan0的操作:

sudo nano /etc/dhcpcd.conf

在文件末尾添加下面内容(设置了要开启的无线接入点网关地址,并禁止wpa_supplicant使用wlan0)(ctrl+s保存,ctrl+x退出):

interface wlan0
static ip_address=192.168.4.1/24
nohook wpa_supplicant

设置要开启的无线接入点的DHCP和DNS服务器(首先备份下原有文件,然后从空白文件进行设置):

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf

文件内容如下:

interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
domain=wlan
address=/gw.wlan/192.168.4.1

设置要开启的无线接入点:

sudo nano /etc/hostapd/hostapd.conf

文件内容如下(其中ssid和wpa_passphrase分别为要开启的无线接入点的名称和密码):

country_code=CN
interface=wlan0
ssid=NameOfNetwork
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=PasswordOfNetwork
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

设置hostapd为守护进程,确保无线端口未被屏蔽:

sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo rfkill unblock wlan

接着重启树莓派可以用其它设备看到新建立的无线网络了:

sudo reboot

到目前为止已经建立了基本可用的独立的无线热点,只是接入到这个热点中的设备无法访问外网,还需要进一步进行设置。当然这里还有个前提是树莓派要能通过网线访问外网。

新建文件:

sudo nano /etc/sysctl.d/routed-ap.conf

文件中写入下面内容:

net.ipv4.ip_forward=1

设置防火墙规则:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo netfilter-persistent save

接着重启树莓派即可:

sudo reboot

这样连接到建立的无线热点的设备就可以访问外网了。


桥接模式

桥接模式前提是树莓派通过网线接入的网络要能正常使用。

安装相关程序:

sudo apt install hostapd -y

创建网桥:

sudo nano /etc/systemd/network/bridge-br0.netdev

文件内容如下(创建名为br0的网桥)(ctrl+s保存,ctrl+x退出):

[NetDev]
Name=br0
Kind=bridge

设置以太网口为网桥成员:

sudo nano /etc/systemd/network/br0-member-eth0.network

文件内容如下:

[Match]
Name=eth0
[Network]
Bridge=br0

启动systemd-networkd守护进程,使树莓派重启时虚拟网桥可以正常工作:

sudo systemctl enable systemd-networkd

调整dhcpcd程序对无线网口、以太网口和网桥的操作:

sudo nano /etc/dhcpcd.conf

在文件中第一行 interface xxx 之前(从未改动过该文件的话其实就在底部添加就行)添加下面内容(屏蔽这两个端口,不给它们设置IP):

denyinterfaces wlan0 eth0

在文件尾部添加下面内容(给网桥设置IP,即树莓派的IP):

interface br0

设置要开启的无线接入点:

sudo nano /etc/hostapd/hostapd.conf

文件内容如下(其中ssid和wpa_passphrase分别为要开启的无线接入点的名称和密码):

country_code=CN
interface=wlan0
bridge=br0
ssid=NameOfNetwork
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=PasswordOfNetwork
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

设置hostapd为守护进程,确保无线端口未被屏蔽:

sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo rfkill unblock wlan

接着重启树莓派可以用其它设备看到新建立的无线网络了:

sudo reboot

总结

总的来说在树莓派中建立无线热点涉及的内容有好几块,但是操作上并不复杂。更多内容可以参考下面链接:


  • hostapd and wpa_supplicant项目页面:
    https://w1.fi/
  • dhcpcd项目页面:
    https://roy.marples.name/projects/dhcpcd/
  • dnsmasq项目页面:
    https://thekelleys.org.uk/dnsmasq/doc.html
  • 如何配置树莓派4B作为802.11ac AP:
    https://blog.csdn.net/Cui_Hongwei/article/details/123997268














创作打卡挑战赛


赢取流量/现金/CSDN周边激励大奖


推荐阅读
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
  • Windows简单部署Exceptionless
    部署准备Elasticsearch、Exceptionless.API、Exceptionless.UI、URLRewrite、.NET运行时 1、安装ElasticSearch1 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 本文介绍了如何使用双路由器有线搭建一个小型的局域网网络,解决家庭或公司多个网络设备无法同时上网的问题。详细讲解了两种简单快速的组网方式,并提供了具体的设置步骤和注意事项。 ... [详细]
  •   1、确认自己的线路是否连接正确腾达a9设置。 ... [详细]
  • IP经常分为内网和外网的,内网IP一般是有路由器分配的,尤其是想公司可能都有各自的内网IP,公用的公网IP。查询内网IP的通用方法是通过doc指令来查询,如ipconfig或者ipconfigall ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 俗话说,好记性不如烂笔头,这些东西也都是我Google来的,做个笔记以后自己安装也方便些。因为官方wiki的BeginnersGuide讲的非常好,大部分步骤按照wiki一步一步来就 ... [详细]
  • NSD cisco高级路由与交换技术2014.8.12
    实验01:DHCP服务的应用实验目标:通过建立DHCP服务,给计算机自动分配地址实验环境:实验步骤:一、配置计算机pc8pc ... [详细]
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
author-avatar
拍友2502911223
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有